package reflect.annotations;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
 * java提供了一些元注解，这些注解是用来说明当前我们定义的注解的一些作用
 * @Target：该注解用于说明我们当前定义的注解可以用在哪些地方，比如方法上，类上，属性上等，如果不指定，则默认为所有地方都可以使用
 *          ElementType.TYPE：表示当前注解只能用于类上
 *          ElementType.METHOD：表示当前注解只能用于方法上
 *          ElementType.FIELD：表示当前注解只能用于属性上
 *          ElementType.PARAMETER：表示当前注解只能用于方法参数上
 *          ElementType.CONSTRUCTOR：表示当前注解只能用于构造方法上
 *          ElementType.LOCAL_VARIABLE：表示当前注解只能用于局部变量上
 *          ElementType.ANNOTATION_TYPE：表示当前注解只能用于注解上
 *          ElementType.PACKAGE：表示当前注解只能用于包上
 *          ElementType.TYPE_PARAMETER：表示当前注解只能用于泛型类型上
 *          ElementType.TYPE_USE：表示当前注解只能用于类型使用上
 *          ElementType.MODULE：表示当前注解只能用于模块上
 *          ElementType.RECORD_COMPONENT：表示当前注解只能用于记录组件上
 *
 * @Retention:保留级别
 *            对应的保留级别：（三个值）
 *            RetentionPolicy.SOURCE：在源文件中保留，编译时丢弃
 *            RetentionPolicy.CLASS：在class文件中保留，运行时丢弃（默认级别）
 *            RetentionPolicy.RUNTIME：在运行时保留
 * */
//@Target({ElementType.TYPE,ElementType.FIELD,ElementType.METHOD})
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface AutoRunClass {

}
